package 动态数组;

/**
 * @Gather:云尚学Java
 * 实现动态数组-去解决数组的弊端
 */
public class DynamicArray {
    int[] ints=new int[5];
    //向数组中添加元素
    int index=0;
    public void add(int num){//1
        //判断空间长度是否够用，如果不够就扩容
        //访问数组元素的索引，大于 合法索引
        if (index>ints.length-1){//0>4
            //扩容 调用扩容方法
            arrayExpansion();
        }
        ints[index++]=num;//ints[0]=1
    }
    //数组扩容的方法
    public void arrayExpansion(){
        int[] bigger=new int[ints.length*2];
        for(int i=0;i<ints.length;i++){
            bigger[i]=ints[i];//10 5个元素 5个位置
        }
        ints=bigger;//10 5个元素 5个位置
        System.out.println("扩容后的数组空间长度："+ints.length);
    }
    public void remove(int index1){//1 2 3 4 5 2(0) 1 3 4 5
        System.out.println("ints.length:"+ints.length);
        int index2=0;
        int[] newArray=new int[ints.length-1];
        if(index<=ints.length-1){
            for(int i=0;i<ints.length;i++){
                if(i !=index1){
                    newArray[index2++]=ints[i];//1 3 4 5
                }
            }
        }
        ints=newArray;//1 2 3 4 5  1 3 4 5 地址赋值 OOP
    }
    //依据索引修改元素
    public void set(int index,int element){
        if(index<=ints.length-1){
            ints[index]=element;
        }else{
            System.out.println("索引越界异常！");
        }
    }
    //依据索引获取元素
    public void getElement(int index){//0
        if(index<=ints.length-1){
            System.out.println(ints[index]);//index[0]
        }

    }

    public static void main(String[] args) {
        DynamicArray dynamicArray=new DynamicArray();
        dynamicArray.add(1);
        dynamicArray.add(2);
        dynamicArray.add(3);
        dynamicArray.add(4);
        dynamicArray.add(5);
        dynamicArray.add(6);
        //dynamicArray.remove(0);//1
        dynamicArray.set(0,100);//1 100
        dynamicArray.getElement(0);
        dynamicArray.getElement(1);
        dynamicArray.getElement(2);
        dynamicArray.getElement(3);
        dynamicArray.getElement(4);
        dynamicArray.getElement(5);

    }

}
